package top.tangyh.lamp.care.mapper;

import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;
import top.tangyh.basic.base.mapper.SuperMapper;
import top.tangyh.lamp.care.entity.BObsvCfg;
import org.springframework.stereotype.Repository;
import top.tangyh.lamp.care.vo.result.ObsvCfgDto;
import top.tangyh.lamp.common.constant.CommonConstant;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * Mapper 接口
 * 观察项配置主表
 * </p>
 *
 * @author zqb
 * @date 2024-07-26 11:20:21
 * @create [2024-07-26 11:20:21] [zqb] [代码生成器生成]
 */
@Repository
public interface BObsvCfgMapper extends SuperMapper<BObsvCfg> {

    /**
     * 查找观察项配置, 传用于观察项记录方面
     *
     * @param limitStart 分页开始记录值(说明：mysql limit 中 第一个参数所需值
     * @param pageSize   分页大小
     * @param wrapper    查询参数
     * @return
     */
    List<ObsvCfgDto> findListForRd(@Param("limitStart") Integer limitStart, @Param("pageSize") Integer pageSize, @Param(Constants.WRAPPER) Wrapper<BObsvCfg> wrapper);

    /**
     * 查找观察项配置
     *
     * @param limitStart 分页开始记录值(说明：mysql limit 中 第一个参数所需值
     * @param pageSize   分页大小
     * @param wrapper    查询参数
     * @return
     */
//    List<ObsvCfgDto> findListOld(@Param("limitStart") Integer limitStart, @Param("pageSize") Integer pageSize, @Param(Constants.WRAPPER) Wrapper<BObsvCfg> wrapper);

    List<ObsvCfgDto> findList(@Param("limitStart") Integer limitStart, @Param("pageSize") Integer pageSize, @Param(Constants.WRAPPER) Wrapper<BObsvCfg> wrapper);

    /**
     * 查找观察项配置记录总数
     *
     * @param wrapper 参询参数
     * @return
     */
    Long findListCount(@Param(Constants.WRAPPER) Wrapper<BObsvCfg> wrapper);


    /**
     * 根据观察项标识找记录
     *
     * @param obsvCode 观察项标识
     * @return
     */
    default BObsvCfg findByCode(String obsvCode) {
        LambdaQueryWrapper<BObsvCfg> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(BObsvCfg::getIsDeleted, CommonConstant.NO_NUMBER)
                .eq(BObsvCfg::getObsvCode, obsvCode);
        List<BObsvCfg> list = selectList(queryWrapper);
        if (CollectionUtil.isEmpty(list)) {
            return null;
        }
        return list.get(0);
    }


    default List<BObsvCfg> getObsvCfgByParam(Set<String> obsvcodes){
        LambdaQueryWrapper<BObsvCfg> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(BObsvCfg::getIsDeleted, CommonConstant.NO_NUMBER)
                .in(BObsvCfg::getObsvCode, obsvcodes);
        return selectList(queryWrapper);
    }
}


